import UIKit

// 游戏区域
class GameBoard: UIView {
    private var mDrawer: CGContext  // 绘图者

    /**
     * 构造方法。
     * @param frame 位置和尺寸
     */
    public override init(frame: CGRect) {
        mDrawer = CGContext(data: nil, width: Int(frame.width), height: Int(frame.height), bitsPerComponent: 8, bytesPerRow: 0, space: CGColorSpaceCreateDeviceRGB(), bitmapInfo: 1)!
        super.init(frame: frame)
        isUserInteractionEnabled = true
    }

    /**
     * 必要的构造方法。
     * @param coder 解码器
     */
    public required init?(coder: NSCoder) {
        mDrawer = CGContext(data: nil, width: 0, height: 0, bitsPerComponent: 8, bytesPerRow: 0, space: CGColorSpaceCreateDeviceRGB(), bitmapInfo: 1)!
        super.init(coder: coder)
    }

    /**
     * 重绘事件的响应方法。
     * @param rect  要重绘的区域
     */
    internal override func draw(_ rect: CGRect) {
        UIGraphicsGetCurrentContext()!.draw(mDrawer.makeImage()!, in: rect, byTiling: false)
    }

    /**
     * 获取绘图者。
     */
    public var drawer: CGContext {
        get {
            return mDrawer
        }
    }
}
